//============================================================================
// Name        : TP1_v1.cpp
// Author      : vane_richard_virgi_lore_gaby
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

/*
 Distrito ((distrito)i, nombreDistrito): Arbol B+
 Votante ((DNI)i, NombreyApellido, clave, domicilio, (distrito)ie, ((eleccion)ie)*): Hash
 Eleccion ((fecha, (cargo)ie)i, ((distrito)ie)+): Arbol B+
 Lista (((eleccion)ie, nombre)i): Hash
 Conteo (((lista)ie, (distrito)ie, (eleccion)ie)i, cantidad): Arbol B+
 Candidato (((lista)ie, (votante)ie, (cargo)ie)i): Hash
 Cargo ((cargo)i, (cargo)*): Hash
 Administrador ((usuario)i, clave): Hash
 * */


#include <iostream>
#include <cstdlib>
#include <fstream>
#include <time.h>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>
#include <stdio.h>

#include "Reportes/Reportes.h"
#include "Logging/Log.h"
#include "ABMs/ABMCandidato.h"
#include "ABMs/ABMLista.h"
#include "ABMs/ABMConteo.h"
#include "ABMs/ABMDistrito.h"
#include "ABMs/ABMVotante.h"
#include "ABMs/ABMEleccion.h"
#include "Menues/Menues.h"
#include "CargaMasiva.h"


using namespace std;

int maisdn(){
	RSA::generarClave();
	char* pepe = RSA::encriptar("hola mundo");
	char* desencriptado = RSA::desencriptar(pepe);

	string pepe1 = RSA::encriptar("hola mundo2");
	string pepe2 = RSA::encriptar("hola mundo3");

	cout << "cifrado: " << pepe << endl;
	cout << "descifrado: " << desencriptado << endl;
	//delete pepe;

	return 0;
}

int mainui(){
	cout  << endl<< "encripto: hola mundo" << endl << endl;

	RSA::generarClave();
	char* value = "hola mundo";

		char* encrypted = RSA::encriptar(value);
		cout << "resultado encrypted: " <<  "   " << string(encrypted)<< endl << endl << endl;

		string originalValue = RSA::desencriptar(encrypted);
		cout << "originalValue : " << string(originalValue ) << endl;
	return 0;
}

int main(){

	RSA::generarClave();
	/*char* value = "hola mundo";

	string encrypted = RSA::encriptar(value);
	cout << "resultado encrypted: " << endl << "   " << encrypted<< endl << endl << endl;

	string originalValue = RSA::desencriptar("025471051411026934033896040338");
	cout << "originalValue : " << string(originalValue ) << endl;
*/
	Menues::MenuInicial();
	//CargaMasiva::CargarEntidades();
}


int mainold(){

	RSA::generarClave();
	/*char* value = "hola mundo";

	cout << "\n\nMensaje a cifrar: " << value << endl;
	char* encrypted = RSA::encriptar(value);
	cout << "resultado encrypted: " << endl << "   " << string(encrypted)<< endl << endl << endl;

	char* originalValue = RSA::desencriptar(encrypted);
	cout << "originalValue : " << originalValue[0]<<originalValue[3] << endl;

*/
	//Menues::MenuInicial();

	//CargaMasiva::CargarEntidades();
	int i = 1;

	string nombreApellido = "Nombre-Apellido-";
	nombreApellido = nombreApellido.append(Helper::IntToString(i));

	string clave = "Clave";
	clave.append(Helper::IntToString(i));

	string domicilio = "Domicilio-";
	domicilio.append(Helper::IntToString(i));

	long dni = i;//(long)GetRandom(99999) * 1000;

	ABMVotante* abmVotante = new ABMVotante();
	Votante  * vot = new Votante(dni, nombreApellido, clave, domicilio, 1);
	abmVotante->Add(vot);

	Votante* v = abmVotante->GetVotante(i);

	string strDni = Helper::LongToString(vot->GetDni());
	string pass = vot->GetClave();
	string strDistrito = Helper::IntToString(vot->GetDistrito());

	string msg = "Votante " + strDni + ". Nombre y Apellido:" + nombreApellido + ". Clave: " + pass + ". Distrito: " + strDistrito;
	cout << msg << endl;



	cout << endl << "Bye!!!" << endl;
	return 0;
}

